/*
 * PerguntasData.java
 *
 *  Created on: 15/11/2011
 *      Author: Vinicius Haidar
 */
/********************************************************************
 * Definicao do package a que esta classe pertence                   *
 *********************************************************************/
package data;

/********************************************************************
 * Listagem de packages incluidos                                    *
 *********************************************************************/
import java.sql.*;
import java.util.*;
import utils.*;

/********************************************************************
 * DESCRICAO DA CLASSE:
 * 
 * Esta classe implementa a camada de DADOS para acesso à tabela
 * '_perguntas' do banco de dados. As funcoes basicas de acesso sao:
 *      + Incluir;
 *      + Consultar;
 *      + Editar;
 *      + Excluir
 *      + etc.
 * 
 * Essas funcoes serao implementadas na medida de sua necessidade.
 * Assim, qualquer caso de uso que a utilize pode incluir metodos à
 * essa classe.
 *********************************************************************/
public class PerguntasData {

    /* Retorna os dados das perguntas com id = pesquisa_id */
    /* public static PerguntasDO consultar(int pesquisa_id, Transaction tr)
    throws Exception
    {
    PerguntasDO perg = new PerguntasDO();
    Connection c = tr.getConnection();
    String sql = "SELECT * FROM " + Tabelas.PERGUNTAS + " WHERE " + Tabelas.PESQUISA_id + " =?;";
    PreparedStatement ps = c.prepareStatement(sql);
    ps.setInt(1, pesquisa_id);
    ResultSet rs = ps.executeQuery();
    while(rs.next())
    {
    perg.setPesquisa_id(rs.getInt(Tabelas.PERGUNTAS_pesquisa_id));
    perg.setIndice(rs.getInt(Tabelas.PERGUNTAS_indice));
    perg.setPergunta(rs.getString(Tabelas.PERGUNTAS_pergunta));
    perg.setOpcao_A(rs.getString(Tabelas.PERGUNTAS_opcao_A));
    perg.setOpcao_B(rs.getString(Tabelas.PERGUNTAS_opcao_B));
    perg.setOpcao_C(rs.getString(Tabelas.PERGUNTAS_opcao_C));
    perg.setOpcao_D(rs.getString(Tabelas.PERGUNTAS_opcao_D));
    perg.setOpcao_E(rs.getString(Tabelas.PERGUNTAS_opcao_E));
    }
    return perg;
    }//consultar*/
    // Retorna uma lista com todas as perguntas de uma dada pesquisa
    public LinkedList<PerguntasDO> buscar(int pesquisa_id, Transaction tr)
            throws SQLException {
        LinkedList<PerguntasDO> lista = null;
        Connection c = tr.getConnection();
        String sql = "SELECT * FROM " + Tabelas.PERGUNTAS + " WHERE " + Tabelas.PERGUNTAS_pesquisa_id + " =?;";
        PreparedStatement ps = c.prepareStatement(sql);
        ps.setInt(1, pesquisa_id);
//        System.out.println(ps.toString());
        ResultSet rs = ps.executeQuery();
        if (rs.next()) {
            lista = new LinkedList<PerguntasDO>();
            rs.beforeFirst();
        }
        while (rs.next()) {
            PerguntasDO perg = new PerguntasDO();
            perg.setPesquisa_id(pesquisa_id);
            perg.setIndice(rs.getInt(Tabelas.PERGUNTAS_indice));
            perg.setPergunta(rs.getString(Tabelas.PERGUNTAS_pergunta));
            perg.setOpcao_A(rs.getString(Tabelas.PERGUNTAS_opcao_A));
            perg.setOpcao_B(rs.getString(Tabelas.PERGUNTAS_opcao_B));
            perg.setOpcao_C(rs.getString(Tabelas.PERGUNTAS_opcao_C));
            perg.setOpcao_D(rs.getString(Tabelas.PERGUNTAS_opcao_D));
            perg.setOpcao_E(rs.getString(Tabelas.PERGUNTAS_opcao_E));
            lista.add(perg);
        }
        return lista;
    }//pesquisasVigentes
} //fim da classe